1. Field of the Invention
The invention relates to Global Navigation Satellite System (GNSS) receivers, and more particularly to memory code generation for GNSS receivers.
2. Description of the Related Art
A Global Navigation Satellite System (GNSS) comprises a GNSS transmitter and a GNSS receiver. A GNSS transmitter modulates a signal with a modulating code before the signal is transmitted. After a GNSS receiver receives the transmitted signal through a radio frequency module, the GNSS receiver must demodulate the received signal with the modulating code before the received signal is further processed. In one embodiment, the modulating code is a series of pseudo random numbers (PRN). The code phase of the modulating code of the GNSS receiver, however, must be synchronized with the code phase of the modulating code of the GNSS transmitter before signal demodulation is performed. A method for synchronizing the codes phases is to calculate a correlation between a received GNSS signal with a modulating code having different code phases. The maximum correlation corresponds to the modulating code with the code phase identical with that of the GNSS transmitter. Thus, the GNSS receiver must calculate a correlation between the received GNSS signal and a demodulating code for code phase synchronization and signal demodulation.
Both Global Positioning Systems (GPS) and Galileo systems are referred to as one of GNSS systems. The modulating codes of GPS systems and Galileo systems are both pseudo-random-number (PRN) codes. The modulating code of a GPS system is a 1023-chip gold code which can be generated by a 10-bit linear feedback shift register. The modulating code of a Galileo system, however, is a memory code which cannot be mathematically generated and has a longer chip size of 4092 chips than that of the GPS system. Referring to FIG. 1, a table listing signal bands of a Galileo system and attributes of the PSN codes corresponding to the signal bands is shown. Both the E1-B channel and the E1-C channel have memory codes with a chip size of 4092 chips. Thus, a Galileo receiver must store the demodulating code in a memory to provide the demodulating code as a source for signal correlation and demodulation.
Referring to FIG. 2, a block diagram of a portion of a conventional Galileo receiver 200 is shown. The Galileo receiver 200 comprises a radio frequency module 202, a Galileo correlator 204, and a PRN code memory 210. The radio frequency module 202 receives a Galileo signal S1 from a Galileo satellite through the air. The PRN code memory 210 stores multiple PRN codes, wherein each PRN code corresponds to a specific Galileo satellite. To provide a PRN code for correlation, the PRN code memory first selects the PRN code corresponding to the satellite transmitting the Galileo signal S1 according to a satellite selection signal. The PRN code memory 210 then outputs the PRN code P with the code phase required by a code phase selection signal to a Galileo correlator 204. The Galileo correlator 204 then calculate the correlation value S2 between the received Galileo signal S1 and the PRN code P. The code phase selection signal continues to shift the code phase of the PRN code P provided by the PRN code memory 210. The code phase corresponding to a maximum correlation value S2 is the code phase of the Galileo satellite transmitting the Galileo signal S1, and signal synchronization is achieved.
A data output bandwidth of a memory indicates how many bits of data is output by the memory during a predetermined period and is equal to a product of an output data width and a data output frequency. The output data width refers to the number of bits of data together output by the memory. The data output frequency refers to the highest frequency in which the memory outputs data. A correlation data length refers to the data length of two correlated signals. When the Galileo correlator 210 calculates a partial correlation S2 with a correlation data length, the output data width of the PRN code memory 210, however, is not always equal to the correlation data length, which determines the correlation efficiency. In addition, the data output frequency of the PRN code memory 210 often does not coincide with the correlation speed of the Galileo correlator 204. Thus, an interface must be provided to buffer the PRN code P between the PRN code memory 210 and the Galileo correlator 204.